#include <QtOpenGL/qgl.h>
#include "util/glutils.h"
#include <stdlib.h>

static float _MV_MATRIX[16] = {1, 0, 0, 0,
                               0, 1, 0, 0,
                               0, 0, 1, 0,
                               0, 0, 0, 1};

void GLUtils::rotateMV(float deg, float x, float y, float z) {
    extern float _MV_MATRIX[16];
    glPushMatrix();
    glLoadIdentity();
    glRotatef(deg, x, y, z);
    glMultMatrixf(_MV_MATRIX);
    glGetFloatv(GL_MODELVIEW_MATRIX, _MV_MATRIX);
    glPopMatrix();
}

void GLUtils::translateMV(float x, float y, float z) {
    extern float _MV_MATRIX[16];
    glPushMatrix();
    glLoadIdentity();
    glTranslatef(x, y, z);
    glMultMatrixf(_MV_MATRIX);
    glGetFloatv(GL_MODELVIEW_MATRIX, _MV_MATRIX);
    glPopMatrix();
}

void GLUtils::scaleMV(float x, float y, float z) {
    extern float _MV_MATRIX[16];
    glPushMatrix();
    glLoadIdentity();
    glScalef(x, y, z);
    glMultMatrixf(_MV_MATRIX);
    glGetFloatv(GL_MODELVIEW_MATRIX, _MV_MATRIX);
    glPopMatrix();
}

void GLUtils::applyMVM() {
    extern float _MV_MATRIX[16];
    glMultMatrixf(_MV_MATRIX);
}
